/*
 * This file is part of b.AMP.
 * 
 * b.AMP is free software: you can redistribute it and/or modify it under 
 * the terms of the GNU Lesser General Public License as published by the 
 * Free Software Foundation, either version 3 of the License, or (at your 
 * option) any later version.
 * 
 * b.AMP is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or 
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU lesser General Public 
 * License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with b.AMP.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef __BAMP_NONNEWABLE__
#define __BAMP_NONNEWABLE__

namespace bamp
{

    /**
     * The Nonnewable class is an explicit way to disallow creating
     * objects using the new operator. This can be useful to enforce
     * the use of smart pointers or stack allocation for objects
     * of derived classes.
     */
    class Nonnewable
    {
    protected:
        void* operator new( size_t );
        void* operator new[]( size_t );

    };

} // namespace bamp

#endif // __BAMP_NONNEWABLE__
